[Code überprüfen]Script um Duplikate im FS zu ersetzen

Hallo ich komme mit einer etwas ungewöhnlichen Bitte. Kann jemand wenn er
Lust und Laune hat mein Script (nur 192 Zeilen), welches unter
<http://www.cip.ifi.lmu.de/~malkusch/code/findDups.txt> zu finden ist auf
Korrektheit überprüfen?

Es soll in einem Verzeichnis (sein einziger Parameter) rekursiv alle
Duplikate entdecken und durch harte Links ersetzen. In einem Testordner
habe ich es mal scharf laufen lassen und es scheint korrekt zu sein. In
seinem Einsatzordner habe ich es im Testmodus (es soll nichts ändern)
laufen lassen und es hat mir ca. 10000 Duplikate entdeckt. Ich sträube mich
noch ein wenig es wirklich loszulassen.
--
Mit PHP Kontonummern auf Gültigkeit prüfen:
<http://bav.malkusch.de/>
Markus Malkusch [ Di, 23 Oktober 2007 21:20 ] [ ID #1852586 ]

Re: [Code überprüfen] Script um Duplikate im FS zu ersetzen

Markus Malkusch schrieb:
> Hallo ich komme mit einer etwas ungewöhnlichen Bitte. Kann jemand wenn er
> Lust und Laune hat mein Script (nur 192 Zeilen), welches unter
> <http://www.cip.ifi.lmu.de/~malkusch/code/findDups.txt> zu finden ist auf
> Korrektheit überprüfen?
>
> Es soll in einem Verzeichnis (sein einziger Parameter) rekursiv alle
> Duplikate entdecken und durch harte Links ersetzen. In einem Testordner
> habe ich es mal scharf laufen lassen und es scheint korrekt zu sein. In
> seinem Einsatzordner habe ich es im Testmodus (es soll nichts ändern)
> laufen lassen und es hat mir ca. 10000 Duplikate entdeckt. Ich sträube mich
> noch ein wenig es wirklich loszulassen.

Wie wäre es, wenn du dir einfach repräsentative Tests schreibst, die
alle Möglichen Fälle abdecken und es dann darauf testest? :)

--
Mit freundlichen Grüßen,
Christoph Herrmann

http://dragonprojects.de/
Christoph Herrmann [ Di, 23 Oktober 2007 23:10 ] [ ID #1852588 ]

Re: [Code überprüfen] Script um Duplikate im FS zu ersetzen

Markus Malkusch wrote:

> Es soll in einem Verzeichnis (sein einziger Parameter) rekursiv alle
> Duplikate entdecken und durch harte Links ersetzen. In einem Testordner
> habe ich es mal scharf laufen lassen und es scheint korrekt zu sein. In
> seinem Einsatzordner habe ich es im Testmodus (es soll nichts ändern)
> laufen lassen und es hat mir ca. 10000 Duplikate entdeckt.

Ist das zu viel oder einfach nur ein unwahscheinliches Resultat?
Ich hab nur mal kurz drüber geschaut. Außer das es nicht in ne Klasse
verpackt ist hätte ich nichts zu bemängeln. Allerding würde ich md5_file
durch sha1_file ersetzen. Das vermindert die Wahrscheinlichkeit
doppelter Hashes. Was die Performance angeht: Sha1 ist nicht wirklich
langsammer als md5. (Meine persöhnlich ermittelten Tests sagen das
zumindest) Muste halt mal testen. Du kannst ja mal, falls Dus testest
Dein Resultat durchgeben.

MfG, Ulf

--
_,
_(_p> Ulf [Kado] Kadner
\<_)
^^
Ulf Kadner [ Di, 23 Oktober 2007 23:27 ] [ ID #1852589 ]

Re: [Code überprüfen]Script um Duplikate im FS zu ersetzen

Christoph Herrmann:

> Wie wäre es, wenn du dir einfach repräsentative Tests schreibst, die
> alle Möglichen Fälle abdecken und es dann darauf testest? :)

Testcases sind vorhanden. Ich bin nur etwas paranoid wenn ich das Script als
root laufen lasse um dabei 10000 Dateien zu verschieben, verlinken und dann
zu löschen.
--
Mit PHP Kontonummern auf Gültigkeit prüfen:
<http://bav.malkusch.de/>
Markus Malkusch [ Mi, 24 Oktober 2007 02:14 ] [ ID #1853611 ]

Re: [Code überprüfen]Script um Duplikate im FS zu ersetzen

Ulf Kadner:

> Ist das zu viel oder einfach nur ein unwahscheinliches Resultat?

Es ist unerwartet hoch (10%). So hoch, dass ich mich jetzt nicht ohne
weitere Meinung traue das Skript auf die 10000 Dateien loszulassen.

> Ich hab nur mal kurz drüber geschaut.

Danke vielmals.

> Allerding würde ich md5_file durch sha1_file ersetzen. Das vermindert die
> Wahrscheinlichkeit doppelter Hashes.

Hmm, das sollte am Ergebnis nichts ändern, da Kollisionen behandelt werden.
--
Mit PHP Kontonummern auf Gültigkeit prüfen:
<http://bav.malkusch.de/>
Markus Malkusch [ Mi, 24 Oktober 2007 02:20 ] [ ID #1853612 ]

Re: [Code überprüfen]Script um Duplikate imFS zu ersetzen

Ad 2007-10-24, Markus Malkusch <markus [at] malkusch.de> dixit:

> [...], dass ich mich jetzt nicht ohne weitere Meinung traue das
> Skript auf die 10000 Dateien loszulassen.

Vorher den Ordner kopieren und dann lostesten. Oder ist kein Platz
fuer die 10000 Dateien?

Grusz,

Peter Blancke

--
Hoc est enim verbum meum!
Peter Blancke [ Mi, 24 Oktober 2007 07:57 ] [ ID #1853613 ]

Re: [Code überprüfen]Script um Duplikate im FS zu ersetzen

Peter Blancke:

> Vorher den Ordner kopieren und dann lostesten. Oder ist kein Platz
> fuer die 10000 Dateien?

Eigentlich hätte ich keinen Platz für 2,5TB. Aber jetzt wo Du's erwähnst
fällt mir ein, dass wir demnächst die Platten des Fileservers komplett
ersetzen. Somit gibt es tatsächlich genug Platz für eine Sicherungskopie,
die ich dann im Anschluss von dem Script vergleichen kann.
--
Mit PHP Kontonummern auf Gültigkeit prüfen:
<http://bav.malkusch.de/>
Markus Malkusch [ Mi, 24 Oktober 2007 14:19 ] [ ID #1853632 ]

Re: [Code überprüfen] Script um Duplikate im FS zu ersetzen

Markus Malkusch schrieb:

> Peter Blancke:
>
>> Vorher den Ordner kopieren und dann lostesten. Oder ist kein Platz
>> fuer die 10000 Dateien?
>
> Eigentlich hätte ich keinen Platz für 2,5TB.

Du musst ja auch nicht _alles_ physikalisch kopieren. Eine "logische"
Kopie tut's auch: Es genügt, die Verzeichnisse zu kopieren und die
Dateien innerhalb der Verzeichnisse durch Hardlinks mit den Originalen
zu verknüpfen. Dann tun es auch ein paar MB. Einzige Voraussetzung: die
"Kopie" muss auf derselben Partition liegen.

Es gibt für alle Betriebssysteme, die Hardlinks kennen, entsprechende
Tools, die so etwas für beliebige Verzeichnisbäume rekursiv erledigen,
z.B. cpio (bei jedem Linux standardmäßig dabei) oder NTFSLinks (Freeware
für Windows).

Gruß. Claus
Claus Reibenstein [ Mi, 24 Oktober 2007 17:16 ] [ ID #1853643 ]
PHP » de.comp.lang.php.misc » [Code überprüfen]Script um Duplikate im FS zu ersetzen

Vorheriges Thema: Frage zu Socket
Nächstes Thema: Upload kommt nicht an